// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue';
// 虚拟列表umy-ui
import './plugin/umy-ui.js'
// 引入element UI
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App';
// 引入路由
import router from './router';
// 引入状态管理
import store from './vuex/store';
// 引入icon
import './assets/icon/iconfont.css'
//请求
import axios from 'axios';
Vue.prototype.$axios = axios;

// 引入暂无权限
import NoPermission from '@/components/NoPermission'

//全局混入
import myMixin from '@/common/myMixin.js'
Vue.use(myMixin)
Vue.mixin(myMixin)

Vue.config.productionTip = false;

// 使用element UI
Vue.use(ElementUI);
// 暂无权限组件注册
Vue.component('NoPermission', NoPermission)
// 过滤器
import * as custom from './utils/util'

// 基本路径
import API from '@/api/apiUrl.js'
// 上传路径
import upload from '@/api/upload.js'
// 注入全局接口
Vue.prototype.apiUrl= API;
Vue.prototype.upload = upload;

// 全局组件注册// 全局组件注册
// 图片组件
import serverImage from "@/components/server-image.vue";
import cImage from "@/components/c-image.vue";
import cRichText from '@/components/c-rich-text.vue';
import noData from '@/components/no-data.vue';
// 全局组件注册
Vue.component('server-image', serverImage)
Vue.component('c-image', cImage)
Vue.component('c-rich-text', cRichText)
Vue.component('no-data', noData)

Object.keys(custom).forEach(key => {
    Vue.filter(key, custom[key])
})

// 钉钉JSAPI引用
// eslint-disable-next-line
import * as dd from 'dingtalk-jsapi' // 此方式为整体加载，也可按需进行加载
Vue.prototype.dd = dd

// 引入md5
import md5 from 'js-md5';
Vue.prototype.$md5 = md5;

//引入分页插件
import vSelectPage from 'v-selectpage';
Vue.use(vSelectPage,{
  language: 'cn',
  dataLoad:function(vue, data, params){
    return new Promise((resolve, reject)=>{
      let randToken = localStorage.getItem('randToken')
      // console.log("randToken",randToken)
      if(randToken){
        params.token = randToken
      }
      if(params.fromUrl == 'doc'){
        if(params.pageNumber){
          params.page=params.pageNumber
        }
        if(params.pageSize){
          params.pagenum=params.pageSize
        }
        // if(myMixin&&myMixin.methods&&myMixin.methods.throttleNew){
        //   myMixin.methods.throttleNew(
        //     axios.post(data,params).then(resp => {
        //       resolve(resp)
        //     }, resp => reject(resp))
        //   ,200)
        // }
        axios.post(data,params).then(resp => {
          resolve(resp)
        }, resp => reject(resp))
        // axios.get(data+'?'+myMixin.methods.urlstringify(params)).then(resp => {
        //   resolve(resp)
        // }, resp => reject(resp))
      }else {
        if(params.pageNumber){
          params.page=params.pageNumber
        }
        if(params.pageSize){
          params.pagenum=params.pageSize
        }
        // if(myMixin&&myMixin.methods&&myMixin.methods.throttleNew){
        //   myMixin.methods.throttleNew(
        //     axios.post(data,params).then(resp => {
        //       resolve(resp)
        //     }, resp => reject(resp))
        //   ,200)
        // }
        axios.post(data,params).then(resp => {
          resolve(resp)
        }, resp => reject(resp))
      }
    })
  },
});

// 引入指令
import throttleDirective from '@/common/throttleDirective.js'
Vue.use(throttleDirective)

// // 路由拦截器
// router.beforeEach((to, from, next) => {
//     if (to.matched.length != 0) {
//         if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
//             if (Boolean(localStorage.getItem("userInfo"))) { // 通过vuex state获取当前的user是否存在
//                 next();
//             } else {
//                 next({
//                     path: '/login',
//                     query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
//                 })
//             }
//         } else {
//             if (Boolean(localStorage.getItem("userInfo"))) { // 判断是否登录
//                 if (to.path != "/" && to.path != "/login") { //判断是否要跳到登录界面
//                     next();
//                 } else {
//                     /**
//                      * 防刷新，如果登录，修改路由跳转到登录页面，修改路由为登录后的首页
//                      */
//                     next({
//                         path: '/feedback/feedbackList'
//                     })
//                 }
//             } else {
//                 next();
//             }
//         }
//     } else {
//         next({
//             path: '/login',
//             query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
//         })
//     }
// })

/* eslint-disable no-new */
new Vue({
    el: '#app',
    router,
    store, //使用store vuex状态管理
    components: { App },
    template: '<App/>',
    data: {
        // 空的实例放到根组件下，所有的子组件都能调用
        Bus: new Vue()
    }

})
